home *** CD-ROM | disk | FTP | other *** search
- ;%%%%%%%%%%%%%%%%%%%%%%%%
- ;script iDraw
- ;version 7.20
- ;author Quietust/Sarek
- ;email quietust@ircN.org
- ;url http://www.ircN.org
- ;%%%%%%%%%%%%%%%%%%%%%%%%
- alias idraw {
- sockudp -k idraw 4567
- socklisten idrawlisten 4567
- window -pfk @iDraw 27 22 512 384 @idraw
- titlebar @iDraw -- Select a color and a thickness, then click in the window to draw
- id.collist
- id.thicklist
- window -kal11Se @iDraw4 27 433 520 125
- aline -l @iDraw4 $me
- window -a @iDraw
- }
- alias -l id.udp {
- var %a
- set %a 0
- :start
- inc %a
- if ($sock(iDraw.*,%a)) {
- if ($sock(iDraw.*,%a).ip != $1) sockudp -k idraw 4567 $ifmatch 4567 $2-
- goto start
- }
- }
- alias -l id.tcp {
- var %a
- set %a 0
- :start
- inc %a
- if ($sock(iDraw.*,%a)) {
- if ($sock(iDraw.*,%a) != $1) sockwrite -n $ifmatch $2-
- goto start
- }
- }
- alias id.conn {
- if ($1) {
- if ($window(@iDraw) == $null) idraw
- qctcp $1 iDraw $longip($ip)
- iecho Sent $hc(iDraw) $sc(request) to $hc($1)
- sockmark iDrawlisten iDraw. $+ $1
- }
- else iecho Syntax: /id.conn <nickname>
- }
- on 1:SOCKLISTEN:iDrawlisten {
- var %z
- set %z $sock($sockname).mark
- if (%z == $null) {
- iecho Unauthorized iDraw connection attempted!
- return
- }
- sockaccept %z
- idraw.login %z
- sockmark $sockname
- }
- alias -l idraw.login {
- var %a, %b, %z
- sockwrite -n $1 LJ $me ( $+ $ip $+ )
- set %a 0
- :start
- inc %a
- if ($sock(iDraw.*,%a)) {
- set %z $ifmatch
- if (%z == $1) goto start
- set %b 0
- :start2
- inc %b
- if ($gettok($sock(%z).mark,%b,44)) {
- sockwrite -n $1 RJ $ifmatch
- goto start2
- }
- goto start
- }
- }
- on 1:SOCKOPEN:iDraw.* {
- if ($sockerr > 0) {
- iecho Unable to establish iDraw connection to $gettok($sockname,2,46)
- return
- }
- idraw.login $sockname
- }
- on 1:SOCKREAD:iDraw.* {
- var %z
- if ($sockerr > 0) {
- iecho iDraw error while connected to $gettok($sockname,2,46)
- return
- }
- sockread %z
- if ($sockbr == 0) return
- idraw.parse $sockname %z
- }
- on 1:SOCKCLOSE:iDraw.* {
- var %w, %x, %y, %z
- set %w $sock($sockname).mark
- if (%w == $null) return
- set %z $gettok($sockname,2,46)
- set %y %z ( $+ $sock($sockname).ip $+ )
- id.tcp $sockname SP %y ( $+ $me %z $+ )
- echo $colour(Quit) -ti2 @iDraw4 *** Quits: %z ( $+ $me %z $+ )
- set %w $remtok(%w,%y,1,44)
- dline -l @iDraw4 $fline(@iDraw4,%z,1,1)
- :sc
- if (%w != $null) {
- set %y $ifmatch
- set %x $gettok(%x,1,44)
- id.tcp $sockname SP %x ( $+ $me %z $+ )
- echo $colour(Quit) -ti2 @iDraw4 *** Quits: %x ( $+ $me %z $+ )
- dline -l @iDraw4 $fline(@iDraw4,$gettok(%y,1,32),1,1)
- set %w $deltok(%w,1,44)
- goto sc
- }
- if ($sock(iDraw.*,0) == 0) echo $colour(Info) -ti2 @iDraw4 *** Disconnected
- }
- alias -l idraw.parse {
- var %z
- set %z $sock($1).mark
- if ($2 == LJ) {
- if ($window(@iDraw) == $null) idraw
- id.tcp $1 RJ $3-
- echo $colour(Join) -ti2 @iDraw4 *** Local Join: $3-
- sockmark $1 $addtok(%z,$3-,44)
- aline -l @iDraw4 $3
- }
- elseif ($2 == RJ) {
- id.tcp $1-
- echo $colour(Join) -ti2 @iDraw4 *** Remote Join: $3-
- sockmark $1 $addtok(%z,$3-,44)
- aline -l @iDraw4 $3
- }
- elseif ($2 == LP) {
- id.tcp $1 RP $3-
- echo $colour(Part) -ti2 @iDraw4 *** Local Part: $3-
- sockmark $1 $remtok(%z,$3-,1,44)
- dline -l @iDraw4 $fline(@iDraw4,$3,1,1)
- :lp
- if ($gettok($ifmatch,1,44)) {
- set %z $ifmatch
- id.tcp $1 RP %z
- echo $colour(Part) -ti2 @iDraw4 *** Remote Part: %z
- dline -l @iDraw4 $fline(@iDraw4,$gettok(%z,1,32),1,1)
- sockmark $1 $deltok($sock($1).mark,1,44)
- goto lp
- }
- sockclose $1
- if ($sock(iDraw.*,0) == 0) echo $colour(Info) -ti2 @iDraw4 *** Disconnected
- }
- elseif ($2 == RP) {
- id.tcp $1-
- echo $colour(Part) -ti2 @iDraw4 *** Remote Part: $3-
- sockmark $1 $remtok(%z,$3-,1,44)
- dline -l @iDraw4 $fline(@iDraw4,$3,1,1)
- }
- elseif ($2 == SP) {
- id.tcp $1-
- echo $colour(Quit) -ti2 @iDraw4 *** Quits: $3-
- sockmark $1 $remtok(%z,$3-,1,44)
- dline -l @iDraw4 $fline(@iDraw4,$3,1,1)
- }
- elseif ($2 == TXT) {
- id.tcp $1-
- echo -ti2 @idraw4 $3-
- }
- elseif ($2 == ACT) {
- id.tcp $1-
- echo $colour(Action) -ti2 @idraw4 $3-
- }
- }
- alias id.accept {
- if ($1) {
- if ($?!="iDraw request from $1 ( $+ $2 $+ ) $+ $crlf $+ Accept it?" == $false) return
- if ($window(@iDraw) == $null) idraw
- sockopen iDraw. $+ $1 $3 4567
- }
- }
- CTCP 1:iDraw *:? { .timer 1 0 id.accept $nick $address $longip($2) }
- on 1:UDPREAD:idraw {
- sockread -f &iDraw
- if ($bvar(&iDraw,1) isnum 1-3) id.udp $sock($sockname).saddr &iDraw
- idraw.udpparse $bvar(&iDraw,1-)
- }
- alias -l idraw.udpparse {
- if ($1 == 1) drawdot -r @idraw $rgb($2,$3,$4) $5 $rgb($6,$7,0) $rgb($8,$9,0)
- elseif ($1 == 2) drawline -r @idraw $rgb($2,$3,$4) $5 $rgb($6,$7,0) $rgb($8,$9,0) $rgb($10,$11,0) $rgb($12,$13,0)
- elseif ($1 == 3) clear @idraw
- }
- alias id.thicklist {
- window -akl +b @iDraw3 547 22 80 50 @idraw3
- clear @idraw3
- aline @idraw3 <thinner-
- aline @idraw3 -thicker>
- if (%idraw.thickness == $null) set %idraw.thickness 2
- aline @idraw3 $str(á,$sub(%idraw.thickness,1)) $+ %idraw.thickness
- }
- alias id.collist {
- window -afkp +b @iDraw2 4 22 20 340 @idraw2
- drawrect -f @idraw2 0 1 0 0 20 20
- drawrect -f @idraw2 1 1 0 20 20 20
- drawrect -f @idraw2 2 1 0 40 20 20
- drawrect -f @idraw2 3 1 0 60 20 20
- drawrect -f @idraw2 4 1 0 80 20 20
- drawrect -f @idraw2 5 1 0 100 20 20
- drawrect -f @idraw2 6 1 0 120 20 20
- drawrect -f @idraw2 7 1 0 140 20 20
- drawrect -f @idraw2 8 1 0 160 20 20
- drawrect -f @idraw2 9 1 0 180 20 20
- drawrect -f @idraw2 10 1 0 200 20 20
- drawrect -f @idraw2 11 1 0 220 20 20
- drawrect -f @idraw2 12 1 0 240 20 20
- drawrect -f @idraw2 13 1 0 260 20 20
- drawrect -f @idraw2 14 1 0 280 20 20
- drawrect -f @idraw2 15 1 0 300 20 20
- drawrect @idraw2 1 1 0 320 19 19
- drawline @idraw2 1 1 0 321 20 321
- if (%idraw.color == $null) set %idraw.color 0
- drawrect -rf @idraw2 %idraw.color 1 1 322 17 16
- }
- alias id.putdot {
- var %a, %b, %c, %z
- set %a $rgb(%idraw.color)
- set %b $deltok($rgb(%idraw.oldmousex),3,44)
- set %c $deltok($rgb(%idraw.oldmousey),3,44)
- set %z 1 %a %idraw.thickness %b %c
- bset &iDraw.send 1 $replace(%z,$chr(44),$chr(32))
- sockudp -k idraw 4567 $ip 4567 &iDraw.send
- }
- alias id.putline {
- if ((%idraw.oldmousex) && (%idraw.oldmousey)) {
- if ($mouse.key & 1) {
- var %a, %b, %c, %d, %e, %z
- set %a $rgb(%idraw.color)
- set %b $deltok($rgb(%idraw.oldmousex),3,44)
- set %c $deltok($rgb(%idraw.oldmousey),3,44)
- set %d $deltok($rgb($mouse.x),3,44)
- set %e $deltok($rgb($mouse.y),3,44)
- set %z 2 %a %idraw.thickness %b %c %d %e
- bset &iDraw.send 1 $replace(%z,$chr(44),$chr(32))
- sockudp -k idraw 4567 $ip 4567 &iDraw.send
- }
- set %idraw.oldmousex $mouse.x
- set %idraw.oldmousey $mouse.y
- }
- elseif ($mouse.key & 1) {
- id.putdot
- set %idraw.oldmousex $mouse.x
- set %idraw.oldmousey $mouse.y
- }
- }
- alias id.clear {
- bset &iDraw.send 1 3
- sockudp -k idraw 4567 $ip 4567 &iDraw.send
- }
- on 1:CLOSE:@idraw* {
- window -c @idraw
- window -c @idraw2
- window -c @idraw3
- window -c @idraw4
- if ($sock(idraw.*)) sockwrite -n idraw.* LP $me ( $+ $ip $+ )
- sockclose idraw*
- }
- alias id.setthick {
- if ($sline(@idraw3,1).ln == 1) dec %idraw.thickness
- elseif ($sline(@idraw3,1).ln == 2) inc %idraw.thickness
- if (%idraw.thickness < 1) set %idraw.thickness 1
- if (%idraw.thickness > 9) set %idraw.thickness 9
- rline @idraw3 3 $str(á,$sub(%idraw.thickness,1)) $+ %idraw.thickness
- }
- menu @idraw {
- mouse { id.putline }
- sclick { id.putdot }
- leave { set %idraw.oldmousex 0 | set %idraw.oldmousey 0 }
- -
- clear { id.clear }
- add user { id.conn $$?="Enter nickname" }
- }
- menu @idraw2 {
- sclick {
- if ($mouse.y < 320) set %idraw.color $getdot(@idraw2,$mouse.x,$mouse.y)
- drawrect -rf @idraw2 %idraw.color 1 1 322 17 16
- }
- }
- menu @idraw3 {
- lbclick { id.setthick }
- dclick { id.setthick }
- }
- on 1:INPUT:@idraw4 {
- if ((($1 == $null) || ($left($1,1) == /)) && ($1 != /me)) return
- if ($1 == /me) {
- if ($sock(idraw.*)) sockwrite -n idraw.* ACT * $me $2-
- echo $colour(Action) -ti2 @idraw4 * $me $2-
- }
- else {
- if ($sock(idraw.*)) sockwrite -n idraw.* TXT < $+ $me $+ > $1-
- echo -ti2 @idraw4 < $+ $me $+ > $1-
- }
- halt
- }
-